約 4,536,709 件
https://w.atwiki.jp/wiki7_ahr/pages/9.html
java2cppソース java2cppソースjava2cppソース中に見たもの java2cppのしくみ java2cppが対応するクラス java2cppが対応するクラスの追加 Javaレベルでの処理 基本的な戦略 java2cppソース中に見たもの java2cppソースをちらりと覘いてみました。まずすぐに判ったのがdfcアプリである、ということ。冒頭一番、しっかりdfc_core.hをインクルードしているし、その他、dfcライブラリを使用する所ではおなじみのインクルードパスとネームスペースを使いまくっています。 という事は、基本的な機能はすべて現在のdfcライブラリとして実装されている範囲で作られているのでdfcがサポートしていないクラスについては処理されない、という事も明らかです。 java2cppのしくみ java2cppにはディレクトリツリーをたどりながら*.javaファイルを読み込んで解析するパーサ部分と自分がたどったディレクトリツリーを生成しながら*.javaから読み込んだ情報に対応する*.cppと*.hファイルに出力する部分があります。変換処理中出てくるエラーメッセージはこのパーサ部分が自分の知らないトークンを発見した時に例外を投げて出力しています。 java2cppが対応するクラス 以上の様な動き方をするjava2cppですが、javaソースでimportされているクラスをチェックする時に、dfcソースを検索する様な事はしていません。従って、dfcのsrcおよびinclude配下に新しいクラス定義を置いても読み取ってはくれません。 java2cppが対応するクラスの追加 jakarta commonsライブラリなどの外部から提供されているライブラリを追加しようとすると、以下の様な手順になると考えられます。 新機能のdfcソースを作成 既存のdfcソースと合わせてビルド 新dfcが出来たところでjava2cppもビルド これは、dfcおよびjava2cppのサポート範囲を直接拡張しようというもので、効果的ではありますが、新規に追加した部分を誰がどう保証するかという問題が残ります。Javaソースが存在しても、C++レベルで実績が無いものを新規に生成する訳なので、十分な試験を行い動作を確認しておかなければなりません。本格的にやろうとすると、それだけでひとつのプロジェクトになってしまう事も考えられます。 Javaレベルでの処理 Javaソースが存在するクラスを処理する方法は2つあります。 あらかじめ変換しておき-lオプションで追加 -sオプションを使って全部入力ファイルとして処理 前者はJavaソースを少しずつ変換してエラーにならない範囲を少しずつ拡げるやり方です。依存関係があった場合、それを逐次解決しながら進める必要があります。後者は入力ファイルを一気に処理してしまうやり方です。依存関係の問題が発生しなければ、一気に結果が得られますが、どこかでつまずいた場合はそれ以降が全てダメになる可能性もあります。また、Javaのソースで全ての元データを揃えておかなければなりません。アプリケーションは可能ですが、DFC未対応のJDKやJakartaライブラリ部分をソースで持ち歩くのはなにかと面倒です。 基本的な戦略 以上の事から、DFCが対応していないコアパッケージのクラスはあらかじめ変換しておき、アプリケーションなど後から追加するクラスは-sで一緒に処理するのが効率的と考えられます。
https://w.atwiki.jp/localmlhub/pages/19.html
WindowsのKobold.cppで小説っぽいのを作る説明です。 割とアレなのもいけます。 なお、モデルにもよりますがメモリは32GBほしいです。 (個人的には近いうちに64GBにしたいと思っています) GPU性能はあまり要らないはずです。参考までにこのページの作者はRTX 3060 12GBを使っています。 モデルをダウンロードする https //huggingface.co/xzuyn/Alpacino-13B-GGML/tree/main ここではAlpacinoの13B・GGML版を使ってみます。 ggjtv3-model-q5_1.binをダウンロードしてPCのどこかに保存してください。 GGML版なら大体なんでもいいです。 なおGGMLはGPUが弱めのマシンでも、CPUを主に使って大規模言語モデルを実行するための形式のようです。同時に「量子化」もされているので、通常のモデルと比べてそこまで精度が落ちていないのにファイルサイズと使うPCパワーを圧倒的に抑えられています。 https //w.atwiki.jp/localmlhub/pages/12.html ダウンロードするモデルについては、このWikiのこちらのページも参考に。 https //huggingface.co/TheBloke/airoboros-33B-gpt4-1.4-GGML/tree/main https //huggingface.co/TheBloke/WizardLM-33B-V1.0-Uncensored-GGML/tree/main 最近ではこれらの「Q4K_M」なども良い感じだと思っています。速度的にはだいぶAlpacino13Bなどより落ちますが、やはり33B版だけあって書いてくれることの幅が広がる印象です。速いマシンを使っている方に。 Kobold.cppをダウンロードする https //github.com/LostRuins/koboldcpp/releases こちらから最新版のkoboldcpp.exeをダウンロードしてください。少し下にスクロールしてAssetsと書いてあるところにあります。 このファイル1つ+モデルファイル1つでやれるのが、kobold.cppのいいところです。 (必須ではないですが)DeepLをPCにインストールしておく https //www.deepl.com/ja/app/ 英語の文章を効率良く書いたり読んだりするためにDeepLはPCにインストールしておきましょう。 Ctrl+Cを2回押すと、ウィンドウが開いて選択している英語を翻訳してくれる機能が特に便利です。 Kobold.cppを起動する koboldcpp.exeを実行します。 初回は多分Windowsが文句を言うので、「詳細情報」を押してから実行ボタンを押しましょう。 すると小さなウィンドウが出てきます。 (※kobold.cppがバージョンアップしてUIが変わってしまいましたが、左下の「Old GUI」を押すとこの記事を書いたときのUIになります) Streaming Mode(全部文章が決まる前に少しずつ文章を出力してくれる)、Use Smart Context(話が長くなってきても続けられる?)、High priority(Kobold.cppに優先的にPC性能を回す?)にはチェックを入れたほうがいいでしょう。 またある程度のGPUを積んだマシンの場合、「Use OpenBLAS」のボタンを押して「Use CLBLast GPU#1」に変えたほうがちょっとスピードアップするように思います。 そして緑色の「LAUNCH」ボタンを押しましょう。 するとモデル選択の画面になるので、さっき落としたAlpacinoの13B・GGML版のモデルを指定してください。 (別のモデルを使いたいならそれを選ぶ) 起動後 しばらく黒い画面に色々とメッセージが出て、やがて自動的にブラウザの画面が開きます。 (当方の環境では15~20秒くらいです) 上のほうにある「Scenarios」のボタンを押し、「New Story」→「Confirm」を選んでみましょう。 キャラ設定を書いてみる 後はいきなり書き始めてもさほど問題ないのですが、いちおうキャラ設定を書いてみます。先にこれを書いておいたほうが、何かと文章が安定する印象があります。 テキスト入力欄の少し上にある「W Info」ボタンをクリックします。小さなウィンドウが出るので、右上にある緑の「+」ボタンを押しましょう。 また横長のウィンドウが出てきます。 とりあえず2人キャラを設定してみる まず「Key(s)」というところに「Rin」と打ち込んでみます。英字は半角にしてください。 そして右のWhat to Rememberと書いてあるところに「Rin is 18 yo, an aggressive lesbian girl.」とでも打ち込んでみます。 ※ここからはDeepLに色々助けてもらいましょう。日本語を英語にするのも英語を日本語にするのも、とても頼りになります。 続けて、横長のウィンドウの右上にも「+」ボタンがあるので押すと行が1つ増えます。 同様に「Key(s)」に「Sakura」と入れ、右側には「Sakura is 18 yo, an obedient girl.」とでもしてみましょうか。 あとは「Save」を押します。 設定を変更する つづいて上のほうにあるSettingsボタンを押します。 MaxTokensは最大の2048に、Amount to genは50~60くらいにしてみましょう。 右下のほうにあるTrim sentencesもチェックを入れていいと思います。文の途中で終わった場合、その半端な文を削除する機能です。 (アレなのを書きたい場合、Allow NSFWがオフになっていたら、オンにしましょ。。。) これで準備はすべて完了です。 小説を書き始める 下の方にあるそこそこ大きなテキスト入力欄(Enter text hereと書いてある)に文章を打ちます。 「In the backyard of the school, Rin kissed Sakura.」としてみました。キーボードのEnterを押すか右のほうの「Submit」というボタンを押すと、生成が始まります。 最初の書き出しは少し時間がかかります。ただエラーが出て止まっていることもあるので、あまりに長いときはKoboldcppのウィンドウを見てみましょう(ブラウザのほうではなく、Windowsのアプリのkoboldcpp画面)。 黒い画面の最後の行にGeneratingとあって数字が段々増えていっているのなら、ちゃんと動いています。 気に入らないところを書き換える こんな文章が出てきました。 わからないところはDeepLにどんどん訳してもらいましょう。 She pushed Sakura to the ground and forced her to suck her fingers. The other girls were shocked with Rin's arrogance. Rin was arrested by two teachers. リンはサクラを地面に倒し、指をなめさせた。他の女子はリンの傲慢にショックを受けた。リンは2人の教師に拘束された。 色々ダメなので、どんどん書き換えます。 まず、Submitボタンの上あたりにある「Allow Editing」にチェックを入れてください。これで自由に書き換えられるようになります。 書き換える例 She pushed Sakura to the ground and 一行目の途中まで、消してしまいました。 She pushed Sakura to the ground and gently whispered " 「優しくささやいた」と内容を変えました。ちなみに"を付けて終わらせると、ほぼ確実にその次にセリフを出してくれます。 もちろん改変するときはDeepL先生が大活躍します。 ただ中学レベルの文法はわかっていたほうが、うまく改変できるはずです。 (とはいえ過去形と現在形を間違ったり、だいぶ文法ミスがあってもそれなりにAIはわかってくれます。単語をミスると変な方向にいくこともありますが。例:fly(飛ぶ)とfry(揚げる、フライ)を間違える) 再生成してみる ではまたEnterキーを押すか、「Submit」ボタンを押してみましょう。 She pushed Sakura to the ground and gently whispered "I'm a lesbian". 優しくささやいた:私はレズよ。 情緒のカケラもないので、生成途中でも止めてしまいます。Submitボタンの下にある[ABORT]を押すとテキスト生成を止められます。 そして「Retry」ボタンを押してください。さっきと同じところまで文章を消してから「Submit」を押すのでもいいです。 ただ、[ABORT]を押してあまり時間が経たないうちに「Retry」やEnterキーや「Submit」を押すとエラーが出ることがあります。そのときはもう少し待ってから「Submit」ボタンを押しましょう。 再々生成 She pushed Sakura to the ground and gently whispered "I love you." "No...I'm straight," Sakura protested. "Then why did you let me do that?" Rin said. "Because... I'm just curious..." Sakura replied. 彼女はサクラを地面に倒してやさしくささやいた:「愛しているわ」 「ダメ……私はストレートです」サクラは抗議した。 「じゃあなんで私にそうさせてるの?」リンは言った。 「ただ……好奇心からです……」サクラは返事した。 今度は悪くありません。こんな感じでどんどん続けていきましょう。 SettingsのAmount to genの量は好みで変えてください。 相当長い文章になっても、さほど破綻はしません。 ただMax Tokenの量を超えた文章になってくると、最初のほうにあったやりとりは無視されてしまうこともあります。 (また上のほうに書いたとおり、起動時にSmart Contextにチェックを入れておかないと、そこから生成が不可能になってしまうようです) それを避けるための「W Info」でのキャラ設定なわけですね。 (※Memoryのほうはより全体的な世界観や話の設定を書くためにあるようですが、とりあえず自分はW Infoでキャラ設定するだけで十分なように思っています。) コツ? 日本語を英語にするとき、主語がないと勝手に補完されるのでおかしくなることがあります。日本語の時点で意識的に主語を書くようにするか、適宜修正しましょう。(例:「そしてRinを抱きしめた」→「Then he hugged Rin.」といきなり男が出てくる) やはり男1人、女1人が一番安定します。最初のうちはそうしたほうがラクでしょう。 では、よいKobold.cppライフを!
https://w.atwiki.jp/ntgrock/pages/90.html
#include "DXLFacade.h" DXLFacade DXLFacade(){} DXLFacade ~DXLFacade(){} bool DXLFacade init(){ SetMainWindowText(WINDOW_TEXT); //Resouce.rcでID定義してます。 SetWindowIconID(101); //ウィンドウモードに ChangeWindowMode(TRUE); //解像度、カラーモードを設定 SetGraphMode(WINDOW_WIDTH, WINDOW_HEIGHT, 32); if(DxLib_Init() == -1) return false; //バックバッファの設定 SetDrawScreen(DX_SCREEN_BACK); return true; } void DXLFacade release() { //DXライブラリの終了 DxLib_End(); }
https://w.atwiki.jp/bluebird/pages/342.html
Links Links論文・プレゼン書き方 学会発表の心得 参考URL 画像処理ライブラリ 画像処理プログラム OpenCV関連 C/C++ 講座・関数 C/C++ 知っておくといいこと 画像関連画像処理入門 画像処理の基礎 画像処理のアルゴリズム 便利ツール動画像関連 音関連 就職関連 論文・プレゼン書き方 東大で学んだ卒業論文の書き方(http //staff.aist.go.jp/toru-nakata/sotsuron.html) 作品をよく見せるためのお手軽テクニック(http //0xcc.net/misc/presen.html) 科学技術論文の書き方(http //www.okada-lab.org/~okada/Ronbun.html) 学会発表の心得 TAKENAKA s Web Page(http //takenaka-akio.cool.ne.jp/index_01.html) 参考URL カメラ監視のための見え方事前予測の研究(テクニカルレポート)(http //www.iwasaki.co.jp/tech_rep/technical/10/index.html) CCDカメラ用レンズの焦点距離と被写体及び画角の関係(http //www.bouhancamera.net/basicknowledge/lens/index.htm) 画像処理ライブラリ OpenCV(http //sourceforge.net/projects/opencvlibrary/) ※↑ダウンロードサイト MIST Project(http //mist.suenaga.cse.nagoya-u.ac.jp/trac/) 画像処理プログラム 群馬大学太田研究室(http //www.ail.cs.gunma-u.ac.jp/Labo/program.html) ※注意!↑このプログラムは研究用途として使ってください OpenCV関連 Yoshimura s Webpage(http //nautilus.cs.miyazaki-u.ac.jp/~yoshi/pukiwiki/index.php?FrontPage) Yoshimura@NAIST s Wiki(http //chihara.naist.jp/people/2005/yasuhi-y/pukiwiki/) けんちょの部屋(http //f38.aaa.livedoor.jp/~kencyo/) 坂東さんのページ(http //hawaii.aist-nara.ac.jp/~takash-b/pukiwiki/index.php?OpenCV#content_1_16) Momma s Wiki(http //www.eml.ele.cst.nihon-u.ac.jp/~momma/wiki/wiki.cgi/OpenCV.html) Kensuke s Lab(http //home.hiroshima-u.ac.jp/kensuke-hfl/lab/opencv/reference/cxcore.shtml) OpenCV for Linux(http //lab.cntl.kyutech.ac.jp/~kobalab/nishida/opencv/01.html) Linux + OpenCV + 1394カメラHOWTO(http //limu.is.kyushu-u.ac.jp/~yosimoto/work/opencv-howto/) OpenCV@Chihara-Lab.(http //chihara.naist.jp/people/2004/kenta-t/OpenCV/pukiwiki/index.php?FrontPage) C/C++ 講座・関数 初心者のためのポイントC言語(http //www9.plala.or.jp/sgwr-t/) TECHSCORE(http //www.techscore.com/tech/C/index.html) ※Java等も扱っている↑ Object-Oriented Java maneuver 別室 C++で開発(http //www.02.246.ne.jp/~torutk/cxx/file/header.html) 「ま」ってことにして(http //www002.upp.so-net.ne.jp/mamewo/c.html) C/C++ 知っておくといいこと 吉田誠一のホームページ (http //www.aerith.net/cpp/typical_bug-j.html#residual) 画像関連 画像処理入門 msdn(http //www.microsoft.com/japan/msdn/academic/Articles/Algorithm/04/) 画像処理の基礎 株式会社キーエンス(http //www.sensor.co.jp/gazo/jiten/gazo03.html) 画像処理のアルゴリズム 画像処理におけるアルゴリズム(http //homepage2.nifty.com/tsugu/sotuken/ronbun/sec3-2.html) TEOライブラリよる画像処理プログラムガイド(http //teo.sourceforge.jp/doc/TeoProgrammingGuide/section5-2.html) 便利ツール 動画像関連 Cowboy 1.00 beta1(http //members.jcom.home.ne.jp/illegal/) ※動画を4つ同時に再生できる。 音関連 M s Audio Recorder Ver 1.03(http //www.pluto.dti.ne.jp/~horie-ms/Recorder/) ※パソコン上の音を録音できる。 就職関連 [en](https //employment.en-japan.com/)
https://w.atwiki.jp/bambooflow/pages/286.html
SDL - Simple DirectMedia Layer SDL - Simple DirectMedia LayerDownload Compile cmake準備 Empty Project 表示 参考 Download Compile % sudo apt-get install libsdl1.2-dev http //www.libsdl.org/ SDL.lib SDLmain.lib opengl32.lib g++ `sdl-config --cflags --libs` -lGL sample.cpp -o sample cmake準備 CMakeLists.txt # # CMakeFileLists.txt # # cmake . # # 要求するCMakeのバージョン cmake_minimum_required(VERSION 2.6) # build type set(CMAKE_BUILD_TYPE DEBUG) # compile option (DEBUG) set(CMAKE_CXX_FLAGS_DEBUG "-g -Wall") set(CMAKE_C_FLAGS_DEBUG "-g -Wall") # compile option (Release) set(CMAKE_CXX_FLAGS_RELEASE "-Wall -O3") set(CMAKE_C_FLAGS_RELEASE "-Wall -O3") # インストール先 # CMAKE_INSTALL_PREFIX(...) ############################################################ set(PROJ_NAME run.x) set(TARGET ${PROJ_NAME}) set(SDL_PATH /usr) # プロジェクト名 project(${PROJ_NAME}) # インクルードパスの追加 include_directories(${SDL_PATH}/include) # ライブラリパスの追加 link_directories(${SDL_PATH}/lib) # 実行ファイルとソースファイル群 add_executable(${TARGET} main.cpp) # ライブラリ target_link_libraries(${TARGET} SDL GL GLU) # マクロ設定 [-D] #add_definitions(-D) Empty Project main.cpp #include cstdio #include cstdlib #include iostream #include SDL/SDL.h #include SDL/SDL_opengl.h #include GL/gl.h #include GL/glu.h static bool initSDL(int width, int height); static void initGL(); static void reshape(GLsizei w, GLsizei h); static void process_events(); static void draw(); bool initSDL(int width, int height) { const SDL_VideoInfo* info; const SDL_Surface *surf; int bpp = 0; if (SDL_Init(SDL_INIT_VIDEO) 0) { std cerr "Video initialization Failed " SDL_GetError() "\n"; SDL_Quit(); return false; } info = SDL_GetVideoInfo(); if (!info) { std cerr "Video query failed " SDL_GetError() "\n"; } bpp = info- vfmt- BitsPerPixel; SDL_GL_SetAttribute(SDL_GL_RED_SIZE,8); SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE,8); SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE,8); SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE,8); SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE,24); SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE,8); SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER,1); //atexit(SDL_Quit); surf = SDL_SetVideoMode(width, height, bpp, SDL_OPENGL|SDL_RESIZABLE); if (!surf) { std cerr SDL_GetError() "\n"; SDL_Quit(); return false; } reshape(width, height); return true; } void initGL() { glClearColor(0.0, 0.0, 0.0, 0.0); glEnable(GL_DEPTH_TEST); } void reshape(GLsizei w, GLsizei h) { glViewport(0, 0, w, h); glOrtho(0.0, w, h, 0.0, -1.0, 1.0); } void process_events() { SDL_Surface *surf; SDL_Event event; while (SDL_PollEvent( event)) { switch (event.type) { case SDL_QUIT std exit(1); break; case SDL_KEYDOWN switch (event.key.keysym.sym) { case SDLK_ESCAPE std exit(0); break; default break; } break; case SDL_VIDEORESIZE SDL_FreeSurface(surf); surf = SDL_SetVideoMode(event.resize.w, event.resize.h, 32, SDL_OPENGL|SDL_RESIZABLE); reshape(static_cast GLsizei (event.resize.w), static_cast GLsizei (event.resize.h)); break; } } } void draw() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //glLoadIdentity(); // 四角形を描く glBegin(GL_QUADS); { glColor3f(1.0, 1.0f, 1.0); // white // 4つの頂点を指定 glVertex3f(100.0f, 100.0f, 0); glVertex3f(540.0f, 100.0f, 0); glVertex3f(540.0f, 380.0f, 0); glVertex3f(100.0f, 380.0f, 0); } glEnd(); SDL_GL_SwapBuffers(); } int main(int argc, char* argv[]) { if (!initSDL(640, 480)) { std exit(1); } // initialize OpenGL initGL(); // simLoop while (true) { process_events(); draw(); } return 0; } 表示 参考 http //www.tacoworks.jp/software/SDLdoc-jp/html/index.html
https://w.atwiki.jp/aniwotawiki/pages/41832.html
登録日:2019/04/14 (日) 16 35 31 更新日:2024/04/14 Sun 07 51 25NEW! 所要時間:約 5 分で読めます ▽タグ一覧 DC Universe DCコミックス Earth-0 Prime Earth アメコミ カルミネ・ディ・ジャンドメニコ コブラ ジェームス・ロビンソン ジェームズ・ゴードン スティーブン・セゴビア トゥーフェイス バットマン ポストフラッシュポイント 『Detective Comics Deface the Face』は2018年にDCコミックスから出版されたアメコミ作品。 + 作品情報 『Detective Comics Vol.1』#988~#993 発売 2018年9月から 脚本 ジェームス・ロビンソン 作画 スティーブン・セゴビア(#988~#990)、カルミネ・ディ・ジャンドメニコ(#991~#993) 日本では未邦訳。 『Starman Vol.2』や『Batman Face the Face』を手掛けたジェームス・ロビンソンによるトゥーフェイスの人間性を掘り下げた作品。 『Batman Face the Face』ではハービー・デントと再び目覚めたトゥーフェイスの対話と変化を描いていたのに対し、 本作ではトゥーフェイスの中で再び目覚めたハービー・デントとトゥーフェイスの歪んだ関係性を描いている。 そして『バットマン ロング・ハロウィーン』などでも描かれてきたバットマンとジェームズ・ゴードンとの友情にもスポットを当てている。 また『DC Rebirth』から『Detective Comics Vol.1』ではチームにおけるバットマンを描いていたが、 本作ではタイトル通り探偵としてのバットマンに重きを置いて描かれている。 【物語】 プライベートや大事件ばかりを優先していた自らを省みたバットマンは、初心にかえり通り魔殺人の捜査を開始する。 被害者の正体や2人のファイヤーフライの存在を追う内に、バットマンは長年の宿敵トゥーフェイスにたどり着く。 しかしトゥーフェイスは事件の発端が警察にあると語る一方、テロ集団『コブラ』の警察襲撃を妨害してゴードンの命を救う。 不自然な行動を取るトゥーフェイスに疑問を抱いたバットマンとゴードンの2人は全ての真相を追求するべく彼と対面する。 【登場人物】 バットマン(ブルース・ウェイン) ゴッサムを守る闇の騎士。最近の活動を反省し初心を取り戻すため、手始めに路上の殺人事件に取り掛かる。 被害者の自宅や素性を捜査し、ゴードンと『バットシグナル』で会合を行うなど探偵としての勘を取り戻していく。 そして2つの銃創や2人のファイヤーフライといったヒントからトゥーフェイスのアジトに行き着くも、 トゥーフェイスは警察に原因があると主張し爆発と共に姿を消してしまう。 その後シグナルの協力でトゥーフェイスの行方を見つけると、ゴードンに連絡を取りトゥーフェイスの元に向かう。 トゥーフェイスの口から事件の真相と『コブラ』の企みを知ると、彼と共に自然歴史博物館そして下水道でのテロを防ぎに向かう。 トゥーフェイス(ハービー・デント) 顔の半分を酸で焼かれ精神が歪んだゴッサムの元地方検事。バットマンが追っていた殺人事件の犯人。 いつも通り2にまつわる証拠を残しバットマンに居場所を暴かれ、彼に今回の事件は警察が原因と主張する。 その一方で『コブラ』の襲撃を受けた警察とゴードンを助けるという矛盾した行動を取り、バットマンとゴードンから真実を問い質される。 彼の隠していた真実とは被害者Karl Twistを殺したのはハービー・デントの意識によるというものだった。 Twistはハービーにとっての最後の事件だったが、警察の失態で自由の身となりゴッサムを離れていた。 再びゴッサムに現れたTwistは『コブラ』のようなテロ集団に計画を提供する危険人物に変わっており、 その事実を知ったトゥーフェイスの脳裏に突如ハービーの意識が目覚めTwistを射殺したのだった。 再び主導権を握ったトゥーフェイスは悪を行うのは自分でなければならないという強迫観念からTwistを撃ち、 さらに動機がハービーの意識によるものと見抜かせないためにファイヤーフライに証拠隠滅を任せていた。 しかしバットマンからハービーの殺人が原因となり『コブラ』の犠牲者が出る可能性を指摘されたため、 バットマンや警察と協力して『コブラ』のテロを防ぎに向かうが……。 ジェームズ・ゴードン ゴッサム市警本部長でバットマンの良き理解者。久しぶりにバットマンと共に事件の捜査に当たる。 そうした中で『コブラ』の襲撃からトゥーフェイスに救われたため、ハービー・デントが戻ってきたと思い始める。 実際にトゥーフェイスと会った際には否定されたものの、彼はゴードンを救った理由を答えるのに窮していた。 トゥーフェイスの話を聞き終えると警察を率いて『コブラ』のテロを防ぎに向かう。 ≪ヴィラン≫ コブラ 蛇の神を信奉するカルトテロ集団。ジェイソン・バーをリーダーにバットマンや様々な組織と戦った。 バーが命を落とすと組織の構造が階級制に変化し弱体化、その状況を打破し力を示すため各地でテロを行っている。 Karl Twistからテロ計画を入手し実行に移す。ゴッサム各地の攻撃はバットマンたちに防がれるも、 真の狙いは下水道に洗脳薬を流しゴッサム市民を『コブラ』の配下に置くことだった。 ファイヤーフライ(テッド・カーソン、ブリジット・パイク) ジェットパックで空を飛び火炎放射器を操るB吸ヴィラン。ブリジットは最近仲間になったばかり。 自分たちの実力を把握しており、失敗を繰り返しながらも成長することで大物になろうと考えている。 トゥーフェイスに依頼され証拠隠滅とバットマンの誘導を行った他、『コブラ』との戦いにも協力する。 トゥイードル・ダム(ダムフリー・トゥイード)、トゥイードル・ディー(ディーバー・トゥイード) 鏡の国のアリスの登場人物によく似た2人組。いとこ同士。バットマンへのヒントとしてトゥーフェイスに雇われた。 ≪その他≫ バットファミリー バットマンの仲間たち。アルフレッドとシグナルが殺人事件の捜査に協力する他、 『アウトサイダーズ』やバットガール、バットウーマンが『コブラ』のテロを防ぐのに協力する。 ハービー・ブロック ゴッサム市警の刑事でゴードンの腹心の部下。『コブラ』の襲撃を生き延び、襲撃者の尋問などを行う。 追記・修正お願いします。 △メニュー 項目変更 この項目が面白かったなら……\ポチッと/ -アニヲタWiki- ▷ コメント欄 [部分編集] 前々から思ってたんだが、デントとブロックと言う“二人”のハービーが…… -- 名無しさん (2019-04-15 22 16 00) 名前 コメント
https://w.atwiki.jp/suffix/pages/30.html
cvWarpaffine(アフィン変換)、cvWarpPerspective(透視変換) という関数がOpencvで用意されている。 変換前と変換後のパラメータで、表示を変更できる。 cvWarpPerspectiveはある物体Aとカメラの位置関係から 2次元画面上への射影を行っている。
https://w.atwiki.jp/annomod/pages/69.html
ActivateKontor_Ansehen5 8102690 Ah! It s good to see you again after all this time! Your visit gladdens an old man s heart! Welcome! Welcome back! By Allah! You re a sight for sore eyes! ActivateKontor_Ansehen6 8102700 By Allah! Your visit is truly an honour for me! You can stay in my house as long as you like! Anyone in the Sultan s confidence will always be welcome here! I am always at the disposal of close friends of the Sultan! Buy_Cancelled NEU 8102710 So be it! As you wish. I understand. Fine. In that case, maybe another time... SelectShip NEW 8107700 My Ships would be delighted to supply you with Goods from my homeland! Only the very best sailors have the honour of serving in the Oriental Trading fleet. My fleet regularly passes on my reports to our esteemed Sultan. The proud Ships of the Orient are among the fastest in the known world! My fleet is utterly insignificant compared to the one owned by our esteemed Sultan! This Ship will soon drop anchor in your Harbour, inshallah! TributeOrHonourDenied NEW 8107850 I fear my hands are tied. The Sultan would not condone this... Unfortunately I must turn down your request. I m very sorry that I can t accommodate you... Your request has come at an extremely inconvenient time... I wish I could do something for you... I deeply regret having to turn you down. Forgive me but I am unable to help you. ConfederationDenied NEW 8107900 I can t give you any Ships without the Sultan s consent... Unfortunately I m not authorised to send Ships to you in support. Regrettably I can t send you a fleet. I m unable to give you a fleet at the moment. Profil Text 8125000 Your Alliance with [THIRDPARTY_THIRD_PLAYER] impresses [THIRDPARTY_SENDER_PLAYER]. [THIRDPARTY_SENDER_PLAYER] congratulates you on completing this phase of the building work on the Sultan s mosque. [THIRDPARTY_SENDER_PLAYER] enthusiastically announces the completion of your Sultan s mosque. [THIRDPARTY_SENDER_PLAYER] notifies you that the Sultan is arriving on his Island. [THIRDPARTY_SENDER_PLAYER] notifies you that the Sultan is leaving his Island. [THIRDPARTY_SENDER_PLAYER] welcomes you to the Orient. [THIRDPARTY_SENDER_PLAYER] hopes that you are settling in the Orient with peaceful intentions. Impressed by your plans to build a Sultan s mosque, [THIRDPARTY_SENDER_PLAYER] asks if you want to begin the construction work. [THIRDPARTY_SENDER_PLAYER] emotionally announces the completion of your Mosque. [THIRDPARTY_SENDER_PLAYER] notifies you that the Sultan is arriving on his Island. [THIRDPARTY_SENDER_PLAYER] notifies you that the Sultan is leaving his Island. [THIRDPARTY_SENDER_PLAYER] explains that the Sultan will only grant you an audience if you have built a Sultan s mosque. [THIRDPARTY_SENDER_PLAYER] acknowledges your actions and honours you with the Diplomatic rank "[ORIENT_HONOUR_TITLE]" and grants you your first insight into Oriental architecture. [THIRDPARTY_SENDER_PLAYER] の評価が上がり、外交ランクが"[ORIENT_HONOUR_TITLE]"になりました。これで新しいイスラムの建物を建てることができます。 In return for your services, [THIRDPARTY_SENDER_PLAYER] honours you with the highest Diplomatic rank in the Empire "[ORIENT_HONOUR_TITLE]" and grants you unrestricted access to Oriental architecture. [THIRDPARTY_SENDER_PLAYER] は、あなたが贈ろうとしている敬意の印を、もの珍しそうに見ています。 [THIRDPARTY_SENDER_PLAYER] はあなたの贈り物を喜んでいます。 A genial [THIRDPARTY_SENDER_PLAYER] explains that you already hold the highest Diplomatic rank in the Orient. [THIRDPARTY_SENDER_PLAYER] はイスラムの街を建設するための資材を、船と一緒に提供してくれました。 Quests 8150000 Standardquests Blockade breaker Dicey Cargo Sail on the horizon Distress at Sea in the Orient For a little smile For the Peace Land ahoy! The green haze Enemy fleet Caught! The lost Fleet I The lost Fleet II The lost Fleet III The lost Fleet IV The Court jester The Feast Ear s honour Fruits for the Orient Hides for the Sultan Velvet and Silk Noble Guests The woodworm Fertile Islands The Sand bank Diplomat in the water The strange Chest Harbour damages In the name of Science The favourite Recipe Resistance Letter and seal Big Barrels Solar eclipse The middle man Border patrol For enjoyment Influx of Beggars Inflation The learned Grand vizier Golden ground … and nothing but the truth Exchange of Cultures Goods and Flotsam Starry night Auxiliary seamen A present for the Sultan Urge for action The price of Peace Patience wearing thin Family ties Ready to harvest Plague of Rats A quarrel between men The Diplomat Message in a bottle Dusty Streets On the highest authority Measuring up Stormy journey The Quack Securing the Harbour Norias Rigging Over here! The find Calm after the storm Cock-and-bull story? The wasps nest The unteachable The Sultan s favourite The warning The old tub Goatherd The new era Safety first Strike while the iron is hot Unlimited opportunities? The mysterious castle A pea-soup fog Logbooks Mercy Might makes right The good fortune of the weak The holy place The game of Kings Lost secret The ambush Favour and mistrust Rotten planks Important Medicine Deep sleep Smuggled Goods An old friend Useful things The sextant I The sextant II The Strongbox The Assassin New bag Research New taste Indecisive Neighbourhood The meeting Family honour Blind zealots Unfair advantage Justitia Protective goggles Training Witching hour Unmistakable initials Haul The miraculous rescue The sleepwalker Money worries Sad, but true The renegade Intriguers The stolen Exchequer The recluse The survivors Measures Enlightenment Golden cover A watery grave Surplus Raw materials The Outpost The Excavation All-seeing eyes The urns Diving gear Defamation Explosive Cargo Sea of flowers Salty enough Guile and wile Instructions No compromises Devastation on the Coast Flying a false Flag Letter of marque The chained Ocean Fall in price Free Sea routes Atrocities Riot squad A real nightmare Treasure cave Legendary Hide-and-seek Figures of power [QUEST_SENDER] has heard that the Emperor would like some new chess pieces for his recovered chess set, and wants to have some made from his precious Ivory. However, he needs a talented craftsman to create the pieces. A Monk, perhaps? Joined forces [QUEST_SENDER] lets you know that he has commissioned a new Banner. It is almost finished, but still needs a little more colour. Floods threaten Overstrung bow The Path of the Warrior [QUEST_SENDER] is organising a Feast in honour of the Sultan, and the best belly dancers are to delight the People with their artistry. Can you help find these women? Key to Peace War looms Coded message Documentation Fitting thanks Al Zahir is once again most grateful for Lord Northbrugh s help in the last Corsair attack. He has now finally found a way to express his gratitude appropriately. Just a little Paper for the last few transcriptions of an old book on Architecture and the gift will be ready. Chess game The Grand vizier is a passionate chess player and has found in Lord Northburgh an equally enthusiastic devotee. Owing to the great distance between them, their written moves will be conveyed by Trading ships. Now it s Al Zahir s move. Gift One of the Grand vizier s Expedition ships has recently returned from its travels and has brought back overwhelming evidence of a forgotten Culture, including sketches of its Architecture. Aware of Lord Northburgh s passion for this sort of thing, Al Zahir wants to send them to him. You can pick up the sketches when next delivering supplies. Restricted zone Stolen writings Al Zahir s Pioneers found a Chest full of scrolls while developing a new Island, all of which bear Lord Northburgh s seal. He asks you to deliver the apparently stolen writings to the Lord. Helperquests BuildOrientalBuilding ok イスラムの建物 イスラムの建物により、新しい技術を手に入れることができます。 イスラムの建物には、荒涼とした南の島に特化したものがあります。水汲み水車は大地に水を引き、北の島では生産できないものを作り出すことができますし、イスラム市民の住居を建てれば、イスラム市民が住んでくれるようになるでしょう。[CR] [CR]イスラム地域を開拓していきましょう! より高いレベルの建物を建てるには、イスラムの技術が必要になります。 よし! スルタンから貰った技術で建物を建てるのだ! よし! スルタンから貰った技術で建物を建てるのだ![CR] [CR][THIRDPARTY_SENDER_PLAYER] はイスラムの建物を建てようと言っています。 我々は最初の一歩を踏み出した… アッラーを称えようではないか! 我々は最初の一歩を踏み出した… アッラーを称えようではないか![CR] [CR][THIRDPARTY_SENDER_PLAYER] は初のイスラムの建物完成を喜んでいます。 BuildNomads ok イスラム市民 イスラム市民の住居を建てて、イスラム市民が移り住めるようにしましょう。 バザーを建てると、周りにイスラム市民の住居を建てることができるようになります。イスラム市民は西洋の人々と同じように、税金を払ってくれます。[CR] [CR]彼らの要求を満たすには、新しい物品や建物が必要です。まずは香辛料を生産してみましょう。なお、ゲームが進むと、イスラム市民はイスラム貴族にレベルアップすることができるようになります。 我の民は主に遊牧民なのだが、シンプルな小屋でも住むのはやぶさかではないぞ。 我の民は主に遊牧民なのだが、シンプルな小屋でも住むのはやぶさかではないぞ。[CR] [CR][THIRDPARTY_SENDER_PLAYER] はイスラム市民の住居を建てるべきだと言っています。 見なさい! イスラムの市民が住み始めている! 見なさい! イスラムの市民が住み始めている![CR] [CR][THIRDPARTY_SENDER_PLAYER] はイスラム市民の住居が完成したことを喜んでいます。 BuildNoria ok 水汲み水車 水汲み水車は砂漠に水を引き、痩せた土地を肥沃な大地に変えてくれます。 水汲み水車は水を供給してくれます。範囲内の砂漠は緑の大地になり、島で様々な植物を生産することができるようになります。[CR] [CR]農園は、必ず水汲み水車の範囲エリア内に建てるようにしましょう。注意! 1つの水汲み水車の周りに沢山の農園を建てると、水が枯れる速度が速くなります。 我々は砂漠を緑に変えるのに水汲み水車を使っているのだ。 我々は砂漠を緑に変えるのに水汲み水車を使っているのだ。[CR] [CR][THIRDPARTY_SENDER_PLAYER] は水汲み水車の建設を奨めています。 見たまえ、砂漠にも命の息吹が! 見たまえ、砂漠にも命の息吹が![CR] [CR][THIRDPARTY_SENDER_PLAYER] は水汲み水車の完成を喜んでいます。 BuildOrientalShips ok イスラムの船 イスラムの造船所を建てて、新しい船を造りましょう。 イスラムの造船所は東洋の造船所と全く同じです。ただし、カラベル船や、イスラム大型交易船、イスラム大型軍艦を造ることができます。[CR] [CR]3種類の船はそれぞれ東洋のものとは一味違った特徴を持ちます。イスラム大型交易船は、大砲をもち、自分で身を守れる唯一の交易船です。 船を造る技術は本当に驚くべきものだ。自分の目で見てみるといい。 船を造る技術は本当に驚くべきものだ。自分の目で見てみるといい。[CR] [CR][THIRDPARTY_SENDER_PLAYER] はイスラム造船所の建設を奨めています。 よし! 船を造るのだ! よし! 船を造るのだ![CR] [CR][THIRDPARTY_SENDER_PLAYER] はイスラム造船所の完成を喜んでいます。 BuildOrientalUnits ok イスラムの軍隊 イスラム要塞を建てて、新たな種類の軍を作りましょう。 イスラム要塞は東洋の要塞と全く同じですが、イスラム野営地、砲台、工兵の3つの新しい種類のユニットを作ることができます。[CR] [CR]これらのユニットは、東洋の軍とは一味違った特徴を持ちます。例えば、工兵は穴を掘って壁を破壊することができます。また、隠れて他のプレイヤーから見えない状態にすることもできます。 イスラムの用兵について熟知しておいたほうがいいぞ。 イスラムの用兵について熟知しておいたほうがいいぞ。[CR] [CR][THIRDPARTY_SENDER_PLAYER] はイスラム要塞を建てることを奨めています。 これで安心だ。この軍隊は貴公を失望させはしないぞ! これで安心だ。この軍隊は貴公を失望させはしないぞ![CR] [CR][THIRDPARTY_SENDER_PLAYER] はイスラム要塞の完成を喜んでいます。 AmbassadorUpgradeRights ok イスラム貴族からの"取引権" イスラム貴族から"取引権"を得ることができます。 イスラム市民が街に居ることが幸せ、安心だと感じるようになったら、イスラム貴族にレベルアップします。[CR]イスラム貴族はHonourを増やしてくれるだけでなく、市民に"取引権"を与えてくれます。 見ろ! イスラム貴族の住居に人が移住し始めているぞ! 見ろ! イスラム貴族の住居に人が移住し始めているぞ![CR] [CR][THIRDPARTY_SENDER_PLAYER] は初のイスラム貴族が移住してきたことを知らせています。 Dummy Dummy BuildMosque ok スルタンのモスク スルタンのモスクはイスラムの街の最終到達点です。 スルタンのモスクは街の最終到達点であり、いくつかの建設フェーズに分かれています。それぞれのフェースでは、特定の物品が多量に必要となります。従って、十分に余裕をもって建設するようにしましょう。[CR] [CR]建設中でも、バザーと同じように周辺にイスラム市民の住居を建てることができます。また、完成すると周りの人々の信仰、娯楽、安全を満たしてくれます。 スルタンのモスクは、イスラムと我々とが強く結びついている象徴となるだろう。 スルタンのモスクは、イスラムと我々とが強く結びついている象徴となるだろう。[CR] [CR][THIRDPARTY_SENDER_PLAYER] はスルタンのモスク建設を提案しています。 Dummy Dummy FunctionOrientDiscovered Orient entdeckt Prüfung Increase Honour ok 外交ランク 外交ランクを上げると、新しいイスラムの建物を建てることができるようになります。 [QUEST_SENDER] から信頼されることにより、イスラムの建物についての知識を教えてもらうことができるようになります。折に触れ、尊敬の念を込めて贈り物をしましょう。[CR]Richard Northburgh からアイテムを購入し、レベルを上げることができます。[CR]外交ランクが上がると、[QUEST_SENDER] は新しい建物の知識を提供してくれるでしょう。 建設知識は評判を良くし、外交ランクを上げることでのみ手に入れることができる。 建設知識は評判を良くし、外交ランクを上げることでのみ手に入れることができる。[CR] [CR][THIRDPARTY_SENDER_PLAYER] は新しいイスラムの建物を建てるためにはどうしたらよいかを説明しています。 Dummy Dummy Quest_Ansehen_Dauerauftrag Orient schenkt Schiff FirstSettlement ok イスラムの街の建設 [QUEST_SENDER] の船に積んである物品を使って、イスラムの街を築きましょう。 [QUEST_SENDER] がくれた船には、イスラム市民の住居を建てる資材と、しばらく人々が暮らせるだけの物品が積まれています。[CR] [CR]ナツメヤシと香辛料が育つ島を見つけるのが理想です。ナツメヤシはイスラム市民の食を満たし、また東洋の街では香辛料が求められるようになるからです。 この船に乗ってイスラム市民が住む地を探し出して欲しい。 この船に乗ってイスラム市民が住む地を探し出して欲しい。[CR] [CR][THIRDPARTY_SENDER_PLAYER] はこの船に詰まれた物品を使って、イスラム市民の入植地を探して欲しいと言っています。 Dummy Dummy Ruins 見捨てられたイスラムの住居 イスラム市民は出て行ってしまったぞ… 何かが決定的に足りなかったのだ! イスラム市民は出て行ってしまったぞ… 何かが決定的に足りなかったのだ![CR] [CR][THIRDPARTY_SENDER_PLAYER] は[QUEST_CITY]の街に廃墟ができたことを知らせています。 DUMMY DUMMY Metropolis Ware メトロポリスでの新しい要望 イスラムの貴族たちの声が大きくなっていることを認めなければならんな… イスラムの貴族たちの声が大きくなっていることを認めなければならんな…[CR] [CR][THIRDPARTY_SENDER_PLAYER] は人々が新しい要望を出していることを知らせています。 おお、我が民にすばらしい心配りをしてくれているな! おお、我が民にすばらしい心配りをしてくれているな![CR] [CR][THIRDPARTY_SENDER_PLAYER] はあなたが人々の新しい要望に気付いたことを喜んでいます。 Spices (NEW) 我が民は香辛料の力を知っている。 我が民は香辛料の力を知っている。[CR] [CR][THIRDPARTY_SENDER_PLAYER] は香辛料の生産に協力的です。 Hassan ben Sahid (Korsaren) 8200000 Profil 8200000 Profil Audio 8200000 Pleased 8200000 By Allah! Good! Yes... menacing laugh Marvellous! Wonderful. Very good... menacing laugh Excellent... Hamdullah! You are very much to my liking! Oh yes... Angry 8206200 No! I want revenge! You ll regret this! You re playing a dangerous game... You ll pay for this! Hold your tongue! You re putting your life at stake! FirstContact 8206000 I am Hassan ben Sahid, leader of the Corsairs and ruler of these waters! Few people track us down here and live to tell the tale... Well, well, what s strange fish we have reeled in here?! laugh PleasedWelcome 8206250 What do you want? Come on, spit it out! Spit it out! I haven t got all day. menacing laugh Well? Do you enjoy playing with fire? Say what you need to say! What brings you here? Well, I never! menacing laugh Oh, it s you... AngryWelcome 8206300 menacing laugh Very brave of you to show your face around here! You d be wise not to turn your back on me... Come on! There s a watery grave here with your name on it! How dare you!? My Ships are already on the lookout for you! I ll soon have you in my clutches! If it s death you re after, you ve come to the right place... PlaymentDemanded 8206350 Fork out a few coins and nothing will happen to you. I ll take what I m owed! Consider it insurance... Life insurance... menacing laugh Don t put up a fight or it ll hurt even more. You d be wise to cough up... TributReceive 8200300 That s better... menacing laugh See, that wasn t so hard... Your money is in safe hands here... You ll get over it. Now you can tell people that Hassan ben Sahid burnt a hole in your purse. DissolveTreaty 8206400 Your period of grace is over! menacing laugh You d be wise to steer clear of my Ships from now on. Times change. That s kismet for you... AllianceTreaty 8206450 I m starting to get used to you... Who could have imagined? I ll accept you into our ranks if you like. Your actions have earned you my respect! We must set the seal on this with a pact! PlayerDenyOffer 8206500 A very ill-considered answer... What?! No one contradicts Hassan ben Sahid... and gets away with it! One day you ll regret this... I don t think you realise what s at stake!
https://w.atwiki.jp/yahirohumpty/pages/12.html
SURF Speeded Up Robust Feature. SIFTと同様の機能を提供する. 64次元ベクトルで特徴ベクトルを構成する. OpenCV1.1pre1から使えるようになり超便利. OpenCVではSIFTと同じく128次元の特徴ベクトルで一つの特徴点を表す. ただし互換性はなく,さらにラプラシアンの符号も考慮する必要がある. 参考リスト 作者サイト http //www.vision.ee.ethz.ch/~surf/ OpenCV1.1pre1以降のsamples/find_obj.cppに使い方が書いてある.
https://w.atwiki.jp/opengl/pages/286.html
こちらに OpenGL Simple Adapter があるので使わせてもらいます。 nursの日記http //d.hatena.ne.jp/nurs/20080315/1205598655 使い方は OpenGL Simple Adapter.h をインクルードして OpenGLSimpleAdapter のインスタンスを作成して GLAdapter- BeginRender(); と GLAdapter- EndRender(); の間に いつもの OpenGL のコードを記述するだけです。 OpenGL Simple Adapter.h #pragma once #pragma comment( lib, opengl32.lib ) #pragma comment( lib, glu32.lib ) #pragma comment( lib, gdi32.lib ) #pragma comment( lib, User32.lib ) #include windows.h #include gl/gl.h #include gl/glu.h //↑こいつの#include は、たぶんこことかではなく、 // コードの中でもusing namespace System;とか記述する // よりも前にしないと、C2872 に苦しめられることになる。 public ref class OpenGLSimpleAdapter // ↑CLRでやる場合は、class の前に、public ref を入れてね { // // OpenGL Simple Adaptor loOGLHost (C) 2008 nurs // // 使い方: // 1)本クラスのインスタンスを、ターゲットビューのメンバとして作成する。 // コンストラクタのHDCは、Win32なら // ⇒ GetDC( this- GetSafeHwnd() ) ); // CLRのFormなら、 // ⇒ GetDC( (HWND)parentForm- Handle.ToPointer() ); // などとして取ってきます。 // 2)ターゲットビューの、適切な箇所(初期化、描画、リサイズ)にて、 // 本ホストの、BeginRender()と、EndRender() を呼び出し、その間に、 // 目的のOpenGL描画コードを記述します。 // *)ちなみに利用側コードのどこかのcpp内にて、 //#pragma comment( lib, opengl32.lib ) //#pragma comment( lib, glu32.lib ) //#pragma comment( lib, gdi32.lib ) //#pragma comment( lib, User32.lib ) // の記述も、忘れないで下さい。 // // ★RenderPolicyを予め作成しておき、必要なときに必要な描画 // ポリシーで、Render() をかける、という使い方もできます。 // ★注意:WindowsForm、.NET環境の場合は、プロジェクトの共通言語 // ランタイムサポートを、/clr pure ではなく、/clr にする。 // // public OpenGLSimpleAdapter( HDC dc ){ if(dc==0) return; m_hdc = dc; { static PIXELFORMATDESCRIPTOR pfd={ sizeof(PIXELFORMATDESCRIPTOR), 1, PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, PFD_TYPE_RGBA, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, PFD_MAIN_PLANE, 0, 0, 0, 0 }; GLint iPixelFormat; if( (iPixelFormat = ChoosePixelFormat(m_hdc, pfd) ) == 0) return; if(SetPixelFormat(m_hdc, iPixelFormat, pfd) == FALSE) return; } if( (m_hglrc = wglCreateContext(m_hdc) )==0) return; // pure Managed だとランタイムでエラーに if( (wglMakeCurrent(m_hdc, m_hglrc) )==0) return; wglMakeCurrent(0, 0); return; } ~OpenGLSimpleAdapter( void ){} template class RenderPolicy void Render( RenderPolicy po ){ wglMakeCurrent( this- m_hdc, this- m_hglrc ); po(); wglMakeCurrent( this- m_hdc, 0 ); SwapBuffers( this- m_hdc ); } HDC BeginRender( void ){ wglMakeCurrent( this- m_hdc, this- m_hglrc ); return this- m_hdc; } void EndRender( void ){ wglMakeCurrent( this- m_hdc, 0 ); SwapBuffers( this- m_hdc ); } void EndRenderNoSwap( void ){ wglMakeCurrent( this- m_hdc, 0 ); } private HDC m_hdc; HGLRC m_hglrc; }; /*使用例 まず、OpenGLSimpleAdapterのインスタンスを作成します。 そして、BeginRender() と、EndRender() の間に目的のOpenGLのgl描画コードを書きます。 private System Void Form1_Load(System Object^ sender, System EventArgs^ e) { GLAdapter = gcnew OpenGLSimpleAdapter(GetDC( (HWND)panel1- Handle.ToPointer() )); } private System Void panel1_Paint(System Object^ sender, System Windows Forms PaintEventArgs^ e) { GLAdapter- BeginRender(); { glClearColor( 0,0,0,0 ); glClear( GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT ); } GLAdapter- EndRender(); } */ MyForm.cpp #pragma comment(linker, /SUBSYSTEM WINDOWS /ENTRY mainCRTStartup ) #include MyForm.h using namespace opengl; [STAThreadAttribute] int main(){ MyForm ^form1 = gcnew MyForm; form1- ShowDialog(); return 0; } MyForm.h #pragma once #include OpenGL Simple Adapter.h namespace opengl { using namespace System; using namespace System ComponentModel; using namespace System Collections; using namespace System Windows Forms; using namespace System Data; using namespace System Drawing; /// summary /// MyForm の概要 /// /summary public ref class MyForm public System Windows Forms Form { public MyForm(void) { InitializeComponent(); // //TODO ここにコンストラクター コードを追加します // } protected /// summary /// 使用中のリソースをすべてクリーンアップします。 /// /summary ~MyForm() { if (components) { delete components; } } private System Windows Forms Panel^ panel1; protected private /// summary /// 必要なデザイナー変数です。 /// /summary System ComponentModel Container ^components; #pragma region Windows Form Designer generated code /// summary /// デザイナー サポートに必要なメソッドです。このメソッドの内容を /// コード エディターで変更しないでください。 /// /summary void InitializeComponent(void) { this- panel1 = (gcnew System Windows Forms Panel()); this- SuspendLayout(); // // panel1 // this- panel1- Location = System Drawing Point(24, 24); this- panel1- Name = L panel1 ; this- panel1- Size = System Drawing Size(218, 182); this- panel1- TabIndex = 0; this- panel1- Paint += gcnew System Windows Forms PaintEventHandler(this, MyForm panel1_Paint); // // MyForm // this- AutoScaleDimensions = System Drawing SizeF(6, 12); this- AutoScaleMode = System Windows Forms AutoScaleMode Font; this- ClientSize = System Drawing Size(284, 261); this- Controls- Add(this- panel1); this- Name = L MyForm ; this- Text = L MyForm ; this- ResumeLayout(false); } #pragma endregion void Line2D(int x1,int y1,int x2, int y2,float size){ glLineWidth(size); glBegin(GL_LINES); glVertex2i(x1,y1); glVertex2i(x2,y2); glEnd(); } private System Void panel1_Paint(System Object^ sender, System Windows Forms PaintEventArgs^ e) { OpenGLSimpleAdapter^ GLAdapter = gcnew OpenGLSimpleAdapter(GetDC( (HWND)panel1- Handle.ToPointer() )); GLAdapter- BeginRender(); { glClearColor( 0,0,0,0 ); glClear( GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT ); glOrtho(0, panel1- Width, panel1- Height, 0, -1, 1); glColor4f(1.0f,1.0f,1.0f,1.0f); Line2D(20,40,200,180,1.0); } GLAdapter- EndRender(); } }; }